package com.guodi.map.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.guodi.map.entity.MapLayer;
import com.guodi.map.entity.MapProjectDir;

import java.util.List;

/**
 * @描述：专题目录/图层 服务类
 * @作者: 代鹏刚
 * @日期: 2019-12-11
 */
public interface IMapProjectDirService extends IService<MapProjectDir> {

    /**
    * @描述: 根据专题id、用户id查询授权专题图层树
    * @作者: 代鹏刚
    * @日期: 2019/12/11 10:53
    **/
    List<MapProjectDir> listTreeByProjectIdAndUserId(MapProjectDir mapProjectDir);

    /**
     * @描述: 根据专题id删除专题图层数据
     * @作者: 邹艺
     * @日期: 2019/12/11 10:53
     **/
    List<MapProjectDir> deleteByProjectId(String projectId);

    /**
    * @描述: 根据ID删除专题目录
    * @作者: 代鹏刚
    * @日期: 2020/1/7 9:33
    **/
    List<MapProjectDir> deleteByIds(String[] ids);

    /**
    * @描述: 验证当前目录下是否存在重名
    * @作者: 代鹏刚
    * @日期: 2020/1/10 14:34
    **/
    List<MapProjectDir> verifyByNames(String[] names, String parentId);

    /**
    * @描述: 获取当前删除的附件信息
    * @作者: 代鹏刚
    * @日期: 2020/1/10 18:25
    **/
    List<String> getDirNames(String[] ids);

    /**
     * @描述: 业务系统获取已授权的专题目录
     * @作者: 代鹏刚
     * @日期: 2020/2/19 15:19
     **/
    List<MapProjectDir> getSpecialMenu(List<String> roleId, String projectId, String projectCode, String layerType, String parentDirId);

    /**
    * @描述: 业务系统获取已授权的专题目录
    * @作者: 代鹏刚
    * @日期: 2020/2/19 15:19
    **/
    List<MapProjectDir> getSpecialMenu(List<String> roleId, String projectId, String projectCode, String layerType);

    /**
    * @描述: 根据专题集code查询
    * @作者: 代鹏刚
    * @日期: 2020/3/11 10:41
    **/
    List<MapProjectDir> findByCode(String code);
    /**
     * @描述:递归创建树
     * @入参:
     * @出参:
     * @作者: 郑文彬
     * @日期: 2020/4/16 10:22
     **/
    public List createTree(String pid,List<MapProjectDir> menus);
    /**
     * @描述:根据专题编码和父节点id查询专题目录树
     * @入参:
     * @出参:
     * @作者: 郑文彬
     * @日期: 2020/4/16 9:34
     **/
    List<MapProjectDir> listTreeByCodeAndParentId(String code , String parentId, boolean isDir);

    /**
     * @描述:根据目录id查询目录下的所有图层
     * @入参:
     * @出参:
     * @作者: 郑文彬
     * @日期: 2020/4/16 9:34
     **/
    IPage<MapLayer> listLayerByDirId(Page<MapLayer> page, String dirId, String code, String keyword);

    /**
     * @描述: 获取有附件的所有专题节点
     * @入参:
     * @出参:
     * @作者: 陈宏成
     * @日期: 2021-04-28 09:48:00
     **/
    List<MapProjectDir> listProjectDirHasFile(List<String> roleId, String projectCode);

    /**
     * @作者: 林楷 2021/5/25
     * @描述: 根据专题id、父级ID查询专题授权图层列表
     * @参数: null
     * @返回: null
     */
    List<MapProjectDir> listTreeByProjectIdAndUserIdLazyLoad(MapProjectDir mapProjectDir);

    /**
     * @作者: 林楷 2021/5/25
     * @描述: 根据projectCode,parentId获取已授权的专题目录列表
     * @参数: null
     * @返回: null
     */
    List<MapProjectDir> getSpecialMenuByParentId(List<String> roleId, String projectId, String projectCode, String layerType, String parentId);

    /**
    * @描述: 根据专题目录ID更新专题目录名称
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2021/6/21 11:39
    **/
    void updateNameByIds(List<String> ids, String name);
}
